package com.ytf.test.fifth;

/**
 * @author: YTF
 * @date: 2024/9/20 12:05
 * @version: 1.0
 * @description: 静态成员 静态对象和静态块
 */
public class ExplicitStatic {

    public static void main(String[] args) {
        System.out.println("Inside main()");
        Cups.cup1.f(99);
        /**
         * Output:
         * Cup(1)
         * Cup(2)
         * Cups()
         * Cups()
         * Inside main()
         * f(99)
         *
         * Inside main()
         * Cup(1)
         * Cup(2)
         * f(99)
         *
         * 总结：
         *  静态初始化只会进行一次，没用到之前不会自动初始化。
         *  如果之间调用静态方法，而不是new静态类，不会调用构造器。
         */
    }
    static Cups cups1 =new Cups();
    static Cups cups2 =new Cups();
}
class Cup{
    public Cup(int marker) {
        System.out.println("Cup("+marker+")");
    }
    void f(int marker){
        System.out.println("f("+marker+")");
    }
}
class Cups{
    static Cup cup1;
    static Cup cup2;

    static {
        cup1 = new Cup(1);
        cup2 = new Cup(2);
    }
    public Cups() {
        System.out.println("Cups()");
    }
}
